package co.edu.udea.impl;

import org.apache.log4j.Logger;
import org.hibernate.Session;
import org.hibernate.Transaction;
import org.springframework.orm.hibernate3.support.HibernateDaoSupport;
import org.springframework.transaction.annotation.Transactional;

import co.edu.udea.dao.RespuestaDao;
import co.edu.udea.model.Respuesta;
import exceptions.ExecptionRTF;

/**
 * 
 * @author Cristina Isabel Mejia Gonzalez
 *
 */
public class RespuestaImp extends HibernateDaoSupport  implements RespuestaDao{

	Logger log = Logger.getLogger(this.getClass());
	
	/**
	 * @param codigoRespuesta, Permite consultar una respuesta segun su codigo
	 * @return devuelve la Respuesta asociada al codigo si el proceso fue exitoso
	 */
	@Override
	public Respuesta consultarRespuesta(int codigoRespuesta) throws ExecptionRTF{

		try {
			return getHibernateTemplate().get(Respuesta.class, codigoRespuesta);
		} catch (Exception e) {

			log.error("No se encontro la respuesta al codigo de solicitud: "+ codigoRespuesta, e); 
			throw new ExecptionRTF(e);
		}
	}

	/**
	 * @param respuesta, Medoto que permite guardar una respuesta nueva
	 * @return devuelve la Respuesta asociada al codigo si el proceso fue exitoso
	 */
	@Transactional
	public Respuesta generarRespuesta(Respuesta respuesta) throws ExecptionRTF{
		
		try {
			Session session = getSessionFactory().openSession();  
			session.save(respuesta);
			session.flush();
			return respuesta;
		} catch (Exception e) {

			log.error("No se pudo generar la respuesta", e); 
			throw new ExecptionRTF(e);
		}
	}

}
